Elastic Container Service
動作
ECS はタスク (Task) と呼ばれる単位で管理された計算ジョブを受け付ける
システムにタスクが投下されるとECS はまず最初にタスクで指定された Docker imageを外部レジストリからダウンロードする 次に ECS はクラスターのスケーリングを行う
スケーリングとは、クラスター内の仮想インスタンスの計算負荷をモニタリングし,計算負荷が指定された閾値 (例えば80%の稼働率) を超えていた場合,新たな仮想インスタンスをクラスター内に立ち上げる,というような操作
計算が終了した後,不要になったインスタンスをシャットダウンする操作も, スケーリングの重要な役割である
クラスターの中に配置できる仮想インスタンスはEC2に加えてFargateと呼ばれるECSでの利用に特化した仮想インスタンスを選択することができる 最後に ECS はタスクの配置を行う
クラスター内で計算負荷が小さい仮想インスタンスを選び出し,そこに Docker イメージを配置することで指定された計算タスクが開始される
code:python
# 空のECSクラスタを定義
cluster = ecs.Cluster(
self, "EcsClusterQaBot-Cluster",
vpc=vpc,
)
# Fargateインスタンスの定義
# デフォルトで1タスクにつき1インスタンスが使用される
taskdef = ecs.FargateTaskDefinition(
self, "EcsClusterQaBot-TaskDef",
cpu=1024, # 1 CPU
memory_limit_mib=4096, # 4GB RAM
)
# 指定したregistoryのdocker imageをダウンロードするよう指示
container = taskdef.add_container(
"EcsClusterQaBot-Container",
image=ecs.ContainerImage.from_registry(
"registry.gitlab.com/tomomano/intro-aws/handson03:latest"
),
)